#pragma once

#ifndef __CORE_ILogger_H__
#define __CORE_ILogger_H__

#include "FLOW_core/namespace.h"
#include "FLOW_core/log_type.h"

namespace CORE
{
	/*!
	 * \brief Interface that all the loggers must inherit to be able to receive the log messages
	 *
	 * Interface that all the loggers must inherit to be able to receive the log messages
	 */
	class ILogger
	{
	public:

		//! Default constructor
		ILogger( ) {}

		//! Virtual destructor, it's an interface
		virtual ~ILogger( ) {}

		//! Outputs a formatted message using a variable list of arguments
		virtual bool_t OutputLogMsg( LOG_TYPE ae_log_type, const char_t* apsz_subsystem, const char_t* apsz_log_msg ) = 0;
	};

} // namespace CORE
#endif